<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>new操作符</title>
</head>
<body>
    <script type="module">
        /**
         * 1. 它创建了一个全新的对象。
         * 2. 它会被执行[[Prototype]]（也就是__proto__）链接。
         * 3. 它使this指向新创建的对象。
         * 4. 通过new创建的每个对象将最终被[[Prototype]]链接到这个函数的prototype对象上。
         * 5. 如果函数没有返回对象类型Object(包含Functoin, Array, Date, RegExg, Error)，那么new表达式中的函数调用将返回该对象引用。
         */
        // 第1次写new
        // import {MyNew} from './js/03_MyNew/MyNew.js'
        // 第2次写new
        // import {MyNew} from './js/03_MyNew/MyNew1.js'

        // 第3次写new
        // import {MyNew} from './js/03_MyNew/MyNew2.js'

        // 第4次写new
        // import {MyNew} from './js/03_MyNew/MyNew3.js'

        // 第5次写new
        // import {MyNew} from './js/03_MyNew/MyNew4.js'

        // 第6次写new
        import MyNew from './js/03_MyNew/MyNew5.js'

        let obj1 = MyNew(A, 1, 2)
        function A() {
            return 1            
        }
        let obj2 = new A(1, 2)
        console.log(obj1, obj2)

        let obj3 = MyNew({a: 1}, 1, 2)
        console.log(obj3)
    </script>
</body>
</html>